<?php

/**
 * @name RechercherController
 * Classe qui impl�mente la fonctionalit� "Recherche"
 */
class RechercherController extends Controller
{
	/**
	 * @method actionSearchByCategory
	 * Recuperation des Produits par categorie
	 * grace a une jointure avec la table CATEGORIE
	 * en utilisant la relation "categories" du model Produit
	 * @return la liste des produits
	 * @return la liste des artistes
	 * @return la liste des clients
	 * @return le libelle de la categorie
	 */
	public function actionSearchByCategory()
	{
		$this->render('/site/index', array(
			'listeProduit'=> Produit::model()->with(array(
	    		'categorie'=>array(
		// On ne souhaite pas r�cup�rer les champs de la table categorie
	        		'select'=>false,
	        		'joinType'=>'INNER JOIN',
	       			'condition'=>'categorie.libelle="'.$_GET['categorie'].'"',
		),
		))->findAll(),
			'listeArtistes'=>Artiste::getTroisDerniersArtistes(),
			'listeClients'=>Client::getTroisDerniersClients(),
			'champsRecherche'=>"Cat&eacute;gorie ".$_GET['categorie']));
	}

	/**
	 * @method actionSearchByType
	 * Recuperation des Produits par type
	 * grace a une jointure avec la table TYPE
	 * en utilisant la relation "types" du model Produit
	 * @return la liste des produits
	 * @return la liste des artistes
	 * @return la liste des clients
	 * @return le libelle du type
	 */
	public function actionSearchByType()
	{
		$this->render('/site/index', array(
			'listeProduit'=> Produit::model()->with(array(
	    		'type'=>array(
		// On ne souhaite pas r�cup�rer les champs de la table type
	        		'select'=>false,
	        		'joinType'=>'INNER JOIN',
	       			'condition'=>'type.libelle="'.$_GET['type'].'"',
		),
		))->findAll(),
			'listeArtistes'=>Artiste::getTroisDerniersArtistes(),
			'listeClients'=>Client::getTroisDerniersClients(),
			'champsRecherche'=>"Type ".$_GET['type']));
	}

	/**
	 * @method actionSearchByPrice
	 * Recuperation des Produits en fonction du prix
	 * Construction de la requete
	 * @return la liste des produits
	 * @return la liste des artistes
	 * @return la liste des clients
	 * @return la tranche de prix
	 */
	public function actionSearchByPrice()
	{
		if(isset($_GET['priceI']) && isset($_GET['priceS'])){
			$condition = "prix between ".$_GET['priceI']." and ".$_GET['priceS'];
			$titre = "- De ".$_GET['priceI']." &agrave; ".$_GET['priceS']." euros";
		}else if(isset($_GET['priceS'])){
			$condition = "prix < ".$_GET['priceS'];
			$titre = "- Moins de ".$_GET['priceS']." euros";
		}else if(isset($_GET['priceI'])){
			$condition = "prix > ".$_GET['priceI'];
			$titre = "- Plus de ".$_GET['priceI']." euros";
		}
		$this->render('/site/index', array(
			'listeProduit'=> Produit::model()->findAll(array('condition'=>$condition)),
			'listeArtistes'=>Artiste::getTroisDerniersArtistes(),
			'listeClients'=>Client::getTroisDerniersClients(),
			'champsRecherche'=>"Prix ".$titre));
	}

	/**
	 * @method actionSearchByCriteria
	 * Construction de la requete pour la recherche multi-criteres
	 * @return la liste des produits
	 * @return la liste des artistes
	 * @return la liste des clients
	 * @return les criteres de recherche
	 */
	public function actionSearchByCriteria()
	{
		// par type
		$types = null;
		if(isset($_POST['search_entree_search_type']) && $_POST['search_entree_search_type'] != "" ){
			$types = array(
			// On ne souhaite pas r�cup�rer les champs de la table type
	        		'select'=>false,
	        		'joinType'=>'INNER JOIN',
	       			'condition'=>'type.id="'.$_POST['search_entree_search_type'].'"',
			);
		}

		//par categorie
		$categories =  null;
		if(isset($_POST['search_entree_search_categorie']) && $_POST['search_entree_search_categorie'] != "" ){
			$categories = array(
			// On ne souhaite pas r�cup�rer les champs de la table categorie
	        		'select'=>false,
	        		'joinType'=>'INNER JOIN',
	       			'condition'=>'categorie.id="'.$_POST['search_entree_search_categorie'].'"',
			);
		}
		//par categorie
		$auteurs =  null;
		if(isset($_POST['search_entree_search_auteur']) && $_POST['search_entree_search_auteur'] != "" ){
			$auteurs = array(
			// On ne souhaite pas r�cup�rer les champs de la table categorie
	        		'select'=>false,
	        		'joinType'=>'INNER JOIN',
	       			'condition'=>'artiste.id_client="'.$_POST['search_entree_search_auteur'].'"',
			);
		}
		// par prix
		$conditions = "1=1 ";
		if(isset($_POST['search_entree_search_prix']) && $_POST['search_entree_search_prix'] != "" ){
			if($_POST['search_entree_search_prix']=="inf_20"){
				$conditions = $conditions."and prix < 20 ";
			}
			else if($_POST['search_entree_search_prix']=="20_50"){
				$conditions = $conditions."and prix between 20 and 50 ";
			}
			else if($_POST['search_entree_search_prix']=="50_100"){
				$conditions = $conditions."and prix between 50 and 100 ";
			}
			else if($_POST['search_entree_search_prix']=="100_200"){
				$conditions = $conditions."and prix between 100 and 200 ";
			}
			else if($_POST['search_entree_search_prix']=="sup_200"){
				$conditions = $conditions."and prix > 150 ";
			}
		}
		// par propres criteres
		if(isset($_POST['search_criteria']) && $_POST['search_criteria'] != "" ){
			$conditions = $conditions."and nom like '%".$_POST['search_criteria']."%' or description like '%".$_POST['search_criteria']."%'";
		}

		$this->render('/site/index', array(
			'listeProduit'=> Produit::model()->with(array('type'=>$types,'categorie'=>$categories,'artiste'=>$auteurs))->findAll(array('condition'=>$conditions)),
			'listeArtistes'=>Artiste::getTroisDerniersArtistes(),
			'listeClients'=>Client::getTroisDerniersClients(),
			'champsRecherche'=>"vos propres crit&egrave;res "));

	}

}